package com.example.controller;

import com.example.controller.vo.AggVO;
import com.example.controller.vo.QueryVO;
import com.example.es.entity.Product;
import com.example.es.service.ProductService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 功能描述: 增删改查接口
 *
 * @author: wangjf
 * @createTime: 2020/3/26 17:27
 * @return
 */
@Slf4j
@RestController
@RequestMapping("/product")
public class ProductController {

    @Autowired
    private ProductService productService;

    @PostMapping("/add")
    public Product add(@RequestBody Product product) {
        product = productService.save(product);
        return product;
    }

    @GetMapping("/list")
    public List<Product> list() {
        return productService.finAll();
    }

    /**
     * @Title: 聚合条件查询【需求案例-商品筛选】
     * @Author: wangsai
     * @Date: 2020/1/20 16:04
     * @Param product
     * @Return: 返回类似京东侧边栏查询条件数据
     * @Description: 输入关键词或增加筛选条件逐步聚合出更精准的侧边栏筛选条件，如：有哪些分类、品牌、和规格参数可选
     */
    @PostMapping("/agg")
    public AggVO agg(@RequestBody QueryVO query) {
        return productService.agg(query);
    }


    /**
     * @Title: 模拟京东商品条件筛选查询【需求案例-搜索结果】
     * @Author: wangsai
     * @Date: 2020/1/20 16:05
     * @Return: 返回商品查询的分页列表
     * @Description: 点击查询条件确定后-查询符合条件的商品。后续可增加排序规则
     */
    @PostMapping("/search")
    public Page<Product> search(@RequestBody QueryVO query,
                                @RequestParam(defaultValue = "1") int page,
                                @RequestParam(defaultValue = "10") int size) {
        return productService.search(query, page, size);
    }

}
